package com.service;

import com.github.pagehelper.PageInfo;
import com.pojo.*;
import com.vo.*;

import java.util.List;

public interface SiteService {

//1. 巡查项目增删改查
    //查询巡检项目
    public PageInfo<Site> selectAllSite(SiteVo siteVo);
    public List<Site> selectAllSite2();

    //删除巡检项目
    public void deletebyid(Integer id);

    //修改巡检项目
    public void updateByPrimaryKey(Site site);

    //添加巡检项目
    public void addSite(Site site);

    //根据id查询是否删除
    public Integer selectsitebyid(Integer id);


//2. 巡查点增删改查

    //查询巡检点
    public PageInfo<Sitepoint> selectAllSitepoint(SitePointVo sitePointVo);

    //删除巡检项目
    public void deleteSitePointbyid(Integer id);

    //添加巡查点
    public void addSitepoint(Sitepoint sitepoint);

    //修改巡检项目
    public void updateSitepoint(Sitepoint sitepoint);


//3. 巡查路线增删改查
    //查询巡查路线
    public PageInfo<Siteroute> selectAllSiteRoute(SiterouteVo siterouteVo);
    public List<Siteroute> selectAllSiteRoute2(Integer id);

    //删除巡检路线
    public void deleteSiteRoutebyid(Integer id);

    //添加巡检路线
    public void addSiteRoute(Siteroute siteroute);

    //修改巡检项目
    public void updateSiteRoute(Siteroute siteroute);



//4.  巡查项目题目增删改查
    //查询项目题目
    public PageInfo<Sitetopic> selectAllSitetopic(SiteTopicVo siteTopicVo);

    //删除巡检路线
    public void deleteSiteTopicbyid(Integer id);

    //添加巡检路线
    public void addSiteTopic(Sitetopic sitetopic);

    //修改巡检路线
    public void updateSiteTopic(Sitetopic sitetopic);

//5.巡查路线巡检点增删改
    //查询巡查路线巡检点
    public PageInfo<Sitepoint> selectAllSitepoint2(SitePointTwoVo sitePointTwoVo);

    public PageInfo<Sitepoint> selectAllSitepoint3(SitePointTwoVo sitePointTwoVo);

    public List<Sitepoint> selectsitepoint();


    //修改巡查巡检点
    public void updateSitepoint2(Sitepoint sitepoint);



//6.项目计划增删改查
    //查询项目计划
    public PageInfo<Siteproject> selectAllSiteProject(SiteProjectVo siteProjectVo);

    //删除巡检计划
    public void deleteSiteProject(Integer id);

    //根据id查询状态
    public Integer selelectSiteProjectbyid(Integer id);
    //根据id修改状态
    public void updateSiteProjectbyid(Siteproject siteproject);


    //添加巡检计划
    public void addSiteProject(Siteproject siteproject);

    //查询制定人
    public List<User> selectAllUser(Integer id);

    //修改巡检计划
    public void updateSiteProject(Siteproject siteproject);

    //查询计划巡检人员
    public List<User> selectUsermcA(Integer id,Integer ids);


//7.巡检任务增删改查
    //巡检任务
    public PageInfo<Sitequest> selectAllSiteQuest(SiteQuestVo siteQuestVo);

    //删除巡检任务
    public void deleteSiteQuest(Integer id);
    public Integer selectsitequestdeleteid(Integer id);

    //在添加巡检计划时同时生成巡检任务
    public void addSiteQuest(Sitequest sitequest);

    //在修改巡检计划时同时修改巡检任务
    public void updateSiteQuest(Sitequest sitequest);
    //查询巡查任务中的流转对象下拉框
    public List<User> selectSiteQuestUser(SiteQuestUserVo siteQuestUserVo);

    //根据巡查计划的id查询巡查任务的id来修改巡查任务
    public Integer selectquestidbyprojectidtoupdate(Integer id);

    //任务详情 根据任务id查询计划id查询路线id查询巡检点
    public List<Sitepoint> selectSiteQuestxiangqing(Integer id);


    //根据id查询任务详情巡检点
    public Sitepoint selectpointbyid(Integer id);


//8.巡检明细

    //添加明细表
    public void addsiteids(Siteids siteids);

    public List<Integer> selectpointidbyrouteid(Integer id);

    //展示明细
    public PageInfo<Siteids> selectsiteids(SiteDetailVo detailVo);

    //任务结束后的报修
    public void addbaoxiu(Repairs repairs);


    //在我的任务里点击结束时改变巡检点状态获取的id集合
    public List<Integer> selectrenwuid(Integer id);

    public Integer selectpointstate(Integer id);

    //删除计划时会同时删除相关的明细
    public void selectmingxiidbyid(Integer integer);

    //删除计划时会同时改变相关的巡检点状态获取的id集合
    public List<Integer> selectpointid(Integer id);

    //删除路线时看状态是否是正在使用
    public Integer selectroutestatebyid(Integer id);

    //删除路线是改变巡检点是否包含的状态获取巡检点id
    public List<Integer> selectpointidsaaabbb(Integer id);


    //删除任务时会删除相关的明细
    public void selectmingxiidbyquestid(Integer id);





//报修记录
    public List<Repairs> selectrepairs();






    //假如在添加完计划后再在路线中加入巡检带点，应该在展示明细时先删除一遍再添加一遍
    //获取明细的所有id并删除所有明细
    public void deleteselectmingxiids();
    //获得所有的计划id
    public List<Integer> selectprojectids();
    //根据获得的计划id查询计划
    public Siteproject selectsiteprojectbyidsthree(Integer id);



    //消息通知
    public PageInfo<Notice> selectnotice(NoticeVo noticeVo);
}














